package com.chapter1.basic.stack;

import java.util.Iterator;

import org.junit.Test;


/** 
 * @ClassName: TestMyStack 
 * @Description: TODO(这里用一句话描述这个类的作用) 
 * @author minjun minjun@bw30.com
 * @date 2015-2-11 下午10:57:13 
 *  
 */
public class TestMyStack {
	
	@Test
	public void test1() {
		FixCapacityStack<String> stack=new FixCapacityStack<String>(5);
		stack.push("jim");
		stack.push("tom");
		stack.push("jack");
		stack.push("jerry");
		stack.push("aaa");
//		stack.push("bbb");
		
		System.out.println(stack.pop());
		System.out.println(stack.pop());
		System.out.println(stack.pop());
		System.out.println(stack.pop());
		System.out.println(stack.pop());
	}
	
	@Test
	public void test2() {
		AutoResizeStack<String> stack=new AutoResizeStack<String>();
		stack.push("jim");
		stack.push("tom");
		stack.push("jack");
		stack.push("jerry");
		stack.push("aaa");
//		System.out.println("======"+stack.size());
		stack.push("bbb");
//		System.out.println("++++++"+stack.size());
		stack.push("bbb");
//		stack.push("bbb");
//		stack.push("bbb");
//		stack.push("bbb");
//		stack.push("bbb");
//		stack.push("bbb");
//		stack.push("bbb");
		
//		System.out.println(stack.pop());
//		System.out.println(stack.pop());
//		System.out.println(stack.pop());
//		System.out.println(stack.pop());
//		System.out.println(stack.pop());
//		System.out.println(stack.pop());
//		System.out.println(stack.pop());
//		System.out.println(stack.pop());
//		System.out.println(stack.pop());
//		System.out.println(stack.pop());
//		System.out.println(stack.pop());
//		System.out.println("------"+stack.size());
		
		/**
		 * 只要stack类的方法中有iterator，并且能返回Iterator对象，就能这么迭代
		 */
		Iterator<String> it=stack.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
		}
		
		System.out.println("=============================");
		
		/**
		 * foreach迭代的类必须要实现Iterable，否则不能使用增强for循环
		 */
		for(String a:stack){
			System.out.println(a);
		}
		
	}
	
	
}
